

using System.Data.Odbc;
using Gestion_Api.AccesoDatos;
using System.Data.SqlClient;
using System.Data;
using System;
namespace Escuela
{
    public class Materia
    {
        private int id;
        private string nombre;
        private string descripcion;
        private int cantidadHoras;
        private bool activo;

        
        #region getter setter
        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        

        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }
        

        public string Descripcion
        {
            get { return descripcion; }
            set { descripcion = value; }
        }
        

        public int CantidadHoras
        {
            get { return cantidadHoras; }
            set { cantidadHoras = value; }
        }
        

        public bool Activo
        {
            get { return activo; }
            set { activo = value; }
        }
        #endregion

        public Materia buscarEnDB(int idMateria)
        {
            //Genero la clase de conexion
            AccesoDB ad = new AccesoDB();

            string query = "coop_materia_GetOne " + idMateria;

            SqlCommand command = new SqlCommand();
            //command.Connection = connection;
            command.CommandText = query;
            command.CommandType = CommandType.Text;

            //Ejecuto query y lo cargo en un data reader
            SqlDataReader dr = ad.ExecuteReader(command);

            //recorro data reader
            if (dr.HasRows)
            {
                Materia ma = new Materia();
                while (dr.Read())
                {
                    ma.Id = Convert.ToInt32(dr[0]);
                    ma.CantidadHoras = Convert.ToInt32(dr[2]);
                    ma.Descripcion = dr[3].ToString();
                    ma.Nombre = dr[4].ToString(); 
                }

                //Cierro el data reader
                dr.Close();
                return ma;
            }
            else
            {
                //no encontre registros en la DB
                return null;
            }

        }

        public Materia buscarMateriaPorNombre(string nombreMateria)
        {
            //Genero la clase de conexion
            AccesoDB ad = new AccesoDB();

            string query = "coop_materia_GetOne_by_name " + "'" + nombreMateria + "'";

            SqlCommand command = new SqlCommand();
            //command.Connection = connection;
            command.CommandText = query;
            command.CommandType = CommandType.Text;

            //Ejecuto query y lo cargo en un data reader
            SqlDataReader dr = ad.ExecuteReader(command);

            //Ejecuto query y lo cargo en un data reader
            //SqlDataReader dr = ad.ExecuteReader(query);

            //recorro data reader
            if (dr.HasRows)
            {
                Materia ma = new Materia();
                while (dr.Read())
                {
                    ma.Id = Convert.ToInt32(dr[0]);
                    ma.CantidadHoras = Convert.ToInt32(dr[2]); ;
                    ma.Descripcion = dr[3].ToString();
                    ma.Nombre = dr[4].ToString();
                }

                //Cierro el data reader
                dr.Close();
                return ma;
            }
            else
            {
                //no encontre registros en la DB
                return null;
            }

        }

        public int agregarADb(Materia ma)
        {
            //Genero la clase de conexion
            AccesoDB ad = new AccesoDB();

            //genero query
            string query = "coop_materia_Insert '', ";
            query += "'" + ma.CantidadHoras + "', ";
            query += "'" + ma.Descripcion + "', ";
            query += "'" + ma.Nombre + "'";

            SqlCommand command = new SqlCommand();
            //command.Connection = connection;
            command.CommandText = query;
            command.CommandType = CommandType.Text;

            //Ejecuto el query
            //int resp = ad.ejecQuery(query);

            int resp = ad.ejecQueryResp(command);

            return resp;
        }

        public int actualizarMateria(Materia ma)
        {
            //Genero la clase de conexion
            AccesoDB ad = new AccesoDB();

            //genero query
            string query = "coop_materia_Update ";
            query += "'" + ma.Id + "', ";
            //query += "'" + ma.activo + "', ";
            query += "'" + ma.CantidadHoras + "', ";
            query += "'" + ma.Descripcion + "', ";
            query += "'" + ma.Nombre + "'";

            //Ejecuto el query
            //int resp = ad.ejecQuery(query);

            SqlCommand command = new SqlCommand();
            //command.Connection = connection;
            command.CommandText = query;
            command.CommandType = CommandType.Text;

            int resp = ad.ejecQueryResp(command);

            return resp;
        }

        public int bajaLogica(Materia ma)
        {
            //Genero la clase de conexion
            AccesoDB ad = new AccesoDB();

            //genero query
            string query = "coop_materia_Delete ";
            query += "'" + ma.Id + "'";
            //query += "'" + ma.Activo + "'";

            //Ejecuto el query
            //int resp = ad.ejecQuery(query);

            SqlCommand command = new SqlCommand();
            //command.Connection = connection;
            command.CommandText = query;
            command.CommandType = CommandType.Text;

            int resp = ad.ejecQueryResp(command);

            return resp;

        }
    }
}
